package com.zhx.common;


import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class testGenericSuperclass<IN,OUT> {

    public testGenericSuperclass() {
        //用于获取当前类的直接超类的类型，包括带有泛型参数的类型信息。
        ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass();
        System.out.println(genericSuperclass);
        //用于获取泛型参数的实际类型。
        Type[] actualTypeArguments = genericSuperclass.getActualTypeArguments();
        for(int i = 0; i < actualTypeArguments.length; i++){
            System.out.println(actualTypeArguments[i]);
        }
    }
}

/**
 * com.zhx.common.testGenericSuperclass<java.lang.Long, java.lang.Object>
 * class java.lang.Long
 * class java.lang.Object
 */

class test extends testGenericSuperclass<Long,Object>{
    public static void main(String[] args) {
        test test = new test();
    }
}
